/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.saber.certificacao.modelos.dto;

import java.util.Map;
import java.util.TreeMap;

/**
 * DTO utilizado para levar informações
 * quantitativas das versões mothers.
 * Informa a certificação, o nome da versão
 * os objetivos e quantidade de questões por 
 * indioma, português e inglês
 * @author gbvbahia
 */
public class VersaoMotherDTO implements Comparable<VersaoMotherDTO> {

    private String certificacaoNome;

    private String versaoMotherNome;
    
    private String url;

    Map<String, int[]> objetivoQuantidade;

    public VersaoMotherDTO() {
    }

    public VersaoMotherDTO(String certificacaoNome, String versaoMotherNome, String url) {
        this.certificacaoNome = certificacaoNome;
        this.versaoMotherNome = versaoMotherNome;
        this.url = url;
    }

    public void addObjetivo(String objetivo, int[] questoes) {
        if (getObjetivoQuantidade().containsKey(objetivo)) {
            int[] temp = getObjetivoQuantidade().get(objetivo);
            if (temp.length > 1) {
                temp[0] = temp[0] + questoes[0];
            }
            if (temp.length > 2) {
                temp[1] = temp[1] + questoes[1];
            }
            getObjetivoQuantidade().put(objetivo, temp);
        } else {
            getObjetivoQuantidade().put(objetivo, questoes);
        }
    }

    public String getCertificacaoNome() {
        return certificacaoNome;
    }

    public void setCertificacaoNome(String certificacaoNome) {
        this.certificacaoNome = certificacaoNome;
    }

    public Map<String, int[]> getObjetivoQuantidade() {
        if (this.objetivoQuantidade == null) {
            this.objetivoQuantidade = new TreeMap<String, int[]>();
        } else {
            this.objetivoQuantidade = new TreeMap<String, int[]>(this.objetivoQuantidade);
        }
        return objetivoQuantidade;
    }

    public void setObjetivoQuantidade(Map<String, int[]> objetivoQuantidade) {
        this.objetivoQuantidade = objetivoQuantidade;
    }

    public String getVersaoMotherNome() {
        return versaoMotherNome;
    }

    public void setVersaoMotherNome(String versaoMotherNome) {
        this.versaoMotherNome = versaoMotherNome;
    }

    @Override
    public int compareTo(VersaoMotherDTO o) {
        int i = 0;
        if (i == 0) {
            i = this.certificacaoNome.compareTo(o.getCertificacaoNome());
        }
        if (i == 0) {
            i = this.versaoMotherNome.compareTo(o.getVersaoMotherNome());
        }
        return i;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final VersaoMotherDTO other = (VersaoMotherDTO) obj;
        if ((this.certificacaoNome == null) ? (other.certificacaoNome != null) : !this.certificacaoNome.equals(other.certificacaoNome)) {
            return false;
        }
        if ((this.versaoMotherNome == null) ? (other.versaoMotherNome != null) : !this.versaoMotherNome.equals(other.versaoMotherNome)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 97 * hash + (this.certificacaoNome != null ? this.certificacaoNome.hashCode() : 0);
        return hash;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
    
    
}
